﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntityLayer;
using FacadeInterface;
using FacadeImplemention;
using System.Collections;

namespace pryCallCenter.Procesos.RegistrarEncuesta
{
    public partial class frmRegistrarEncuesta : System.Web.UI.Page
    {
        private static List<EncuestaPregunta> EncuestaPregunta = null;
        private clsIFacadeRegistrarEncuesta InterfaceRegistrarEncuesta;
        EncuestaDocumento objEncuestaDocumento;
        private Boolean ok;
        private String msg, titulo;

        private void Page_Load(object sender, EventArgs e)
        {
             try
            {
                if (!IsPostBack)
                {
                    if (Session["USUARIO"] == null)
                    {
                        Response.Redirect("~/Account/Login.aspx", false);
                    }
                    txtUsuario.Text = "William Requejo";
                    dtpFecha.Text = "20/05/2013";

                    if (
                        Session["encuest"] != null &&
                        Session["empresa"] != null &&
                        Session["nropedido"] != null &&
                        Session["tipodocumento"] != null &&
                        Session["nomCliente"] != null
                        )
                    {
                        int encuesta = Convert.ToInt16(Session["encuest"]);
                            const int cuestionario = 1;
                            txtNomCliente.Text = Session["nomCliente"].ToString();
                            MostrarCuestionario(encuesta, cuestionario);
                            MostrarNombres(encuesta);
                    }
                    else
                    {
                        Session["msg"] = "Debe Acceder Desde Esta Ventana.";
                        Session["Grabacion"] = false;
                        Response.Redirect("~/Procesos/AdministrarPedido/frmAdministrarPedido.aspx");
                    }                    
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL CARGAR LA PAGINA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        protected void AgregarCliente(object sender, EventArgs e)
        {
            try
            {
                int ID = Convert.ToInt32(dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "CodigoPersona").ToString());
                String NOM = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "Nombres").ToString();
                String APEPA = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "ApellidoPaterno").ToString();
                String APEMA = dgvClientes.GetRowValues(dgvClientes.FocusedRowIndex, "ApellidoMaterno").ToString();
                txtNomCliente.Text = String.Format("{0} {1} {2}", NOM, APEPA, APEMA);
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL AGREGAR AL CLIENTE";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }
  
        public void MostrarCuestionario(int encuesta, int cuestionario)
        {
            if (encuesta == 1)
            {
                pnlEncOpeVenta.Visible = true;
                pnlEncProdServc.Visible = false;

                if (cuestionario == 1)
                {
                    EOVCuest1.Visible = true;
                    EOVCuest2.Visible = false;
                }
                else if (cuestionario == 2)
                {
                    EOVCuest1.Visible = false;
                    EOVCuest2.Visible = true;
                }
            }
            else if (encuesta == 2)
            {
                pnlEncOpeVenta.Visible = false;
                pnlEncProdServc.Visible = true;

                if (cuestionario == 1)
                {
                    EPSCuest1.Visible = true;
                    EPSCuest2.Visible = false;
                    EPSCuest3.Visible = false;
                }
                else if (cuestionario == 2)
                {
                    EPSCuest1.Visible = false;
                    EPSCuest2.Visible = true;
                    EPSCuest3.Visible = false;
                }
                else if (cuestionario == 3)
                {
                    EPSCuest1.Visible = false;
                    EPSCuest2.Visible = false;
                    EPSCuest3.Visible = true;
                }
            }
            else if (encuesta  == 0)
            {
                pnlCliente.Visible = false;
                pnlEncOpeVenta.Visible = false;
                pnlEncProdServc.Visible = false;
                if (cuestionario == 0)
                {
                    lblMensaje.Text = "Su Session Ha Caducado. Por Favor cierra esta ventana y vuelva a ingresar.";
                    lblTipoEncuesta.Text = "Su Session ha Caducado";
                    ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcMensaje.Show();", true);
                }
                else if (cuestionario == 1)
                {
                    Session["msg"] = "Este pedido ya tiene registrado esta encuesta.";
                    Session["Grabacion"] = false;
                    Response.Redirect("~/Procesos/AdministrarPedido/frmAdministrarPedido.aspx");
                }
            }
        
        }

        public void MostrarNombres(int encuesta)
        {
            InterfaceRegistrarEncuesta = new clsFacadeRegistrarEncuesta();
        
            if (encuesta == 1)
            {
                EncuestaPregunta = InterfaceRegistrarEncuesta.ListarEncuestaPregunta("OV");
                lblTipoEncuesta.Text = "ENCUESTA DE OPERADOR DE VENTA";
                lblEOVP1.Text = EncuestaPregunta[0].DescripcionPregunta;
                lblEOVP2.Text = EncuestaPregunta[1].DescripcionPregunta;
                lblEOVP3.Text = EncuestaPregunta[2].DescripcionPregunta;
                lblEOVP4.Text = EncuestaPregunta[3].DescripcionPregunta;
                lblEOVP5.Text = EncuestaPregunta[4].DescripcionPregunta;
                lblEOVP6.Text = EncuestaPregunta[5].DescripcionPregunta;
            }
            else if (encuesta == 2)
            {
                EncuestaPregunta = InterfaceRegistrarEncuesta.ListarEncuestaPregunta("PS");
                lblTipoEncuesta.Text = "ENCUESTA DE PRODUCTO / SERVICIO";
                lblEPSP1.Text = EncuestaPregunta[0].DescripcionPregunta;
                lblEPSP2.Text = EncuestaPregunta[1].DescripcionPregunta;
                lblEPSP3.Text = EncuestaPregunta[2].DescripcionPregunta;
                lblEPSP4.Text = EncuestaPregunta[3].DescripcionPregunta;
                lblEPSP5.Text = EncuestaPregunta[4].DescripcionPregunta;
                lblEPSP6.Text = EncuestaPregunta[5].DescripcionPregunta;
                lblEPSP7.Text = EncuestaPregunta[6].DescripcionPregunta;
                lblEPSP8.Text = EncuestaPregunta[7].DescripcionPregunta;
                lblEPSP9.Text = EncuestaPregunta[8].DescripcionPregunta;
            }
        }

        //--------------- Cuestionario 1 ------------------------

        protected void EOPC1Next(object sender, EventArgs e)
        {
            MostrarCuestionario(1, 2);
        }

        protected void EOPC2Back(object sender, EventArgs e)
        {
            MostrarCuestionario(1, 1);
        }

        protected void EOPC2End(object sender, EventArgs e)
        {
            Guardar(1);
        }

        //--------------- Cuestionario 2 ------------------------

        protected void EPSC1Next(object sender, EventArgs e)
        {
            MostrarCuestionario(2, 2);
        }

        protected void EPSC2Back(object sender, EventArgs e)
        {
            MostrarCuestionario(2, 1);
        }

        protected void EPSC2Next(object sender, EventArgs e)
        {
            MostrarCuestionario(2, 3);
        }

        protected void EPSC3Back(object sender, EventArgs e)
        {
            MostrarCuestionario(2, 2);
        }

        protected void EPSC3End(object sender, EventArgs e)
        {
            Guardar(2);
        }
        //-------------------------------------------------------

        private void Guardar(int encuesta)
        {
            try
            {
                if (txtNomCliente.Text != "")
                {
                    if (encuesta == 1)
                    {
                        GuardarCuestionario1();
                    }
                    else if (encuesta == 2)
                    {
                        GuardarCuestionario2();
                    }
                }
                else
                {
                    titulo = "Mensaje";
                    msg = "Debe Seleccionar un Cliente";
                    MostrarComentario(msg, titulo);
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL GUARDAR LA ENCUESTA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void GuardarCuestionario1()
        {
            try
            {
                ok = true;
                String p1, p2, p3, p4, p5, p6;
                String r1, r2, r3, r4, r5, r6;
               
                r1 = rblEOVP1.SelectedItem.Value.ToString();
                r2 = rblEOVP2.SelectedItem.Value.ToString();
                r3 = rblEOVP3.SelectedItem.Value.ToString();
                r4 = rblEOVP4.SelectedItem.Value.ToString();
                r5 = rblEOVP5.SelectedItem.Value.ToString();
                r6 = txtAEOVP6.Text;

                if (r6.Trim() == "")
                {
                    ok = false;
                }

                if (ok == true)
                {
                    p1 = lblEOVP1.Text;
                    p2 = lblEOVP2.Text;
                    p3 = lblEOVP3.Text;
                    p4 = lblEOVP4.Text;
                    p5 = lblEOVP5.Text;
                    p6 = lblEOVP6.Text;
                    
                    ok = GuardarCuestionario("OV", "P1", p1, r1);
                    ok = GuardarCuestionario("OV", "P2", p2, r2);
                    ok = GuardarCuestionario("OV", "P3", p3, r3);
                    ok = GuardarCuestionario("OV", "P4", p4, r4);
                    ok = GuardarCuestionario("OV", "P5", p5, r5);
                    ok = GuardarCuestionario("OV", "P6", p6, r6);

                    Grabacion(ok, 1);
                }
                else
                {
                    Grabacion(ok, 0);
                }
            }
            catch (Exception)
            {
                ok = false;
                Grabacion(ok, 0);
            }

        }

        private void GuardarCuestionario2()
        {
            try
            {
                ok = false;
                String p1, p2, p3, p4, p5, p6, p7, p8, p9;
                String r1, r2, r3, r4, r5, r6, r7, r8, r9;

                r1 = rblEPSP1.SelectedItem.Value.ToString();
                r2 = rblEPSP2.SelectedItem.Value.ToString();
                r3 = rblEPSP3.SelectedItem.Value.ToString();
                r4 = rblEPSP4.SelectedItem.Value.ToString();
                r5 = rblEPSP5.SelectedItem.Value.ToString();
                r6 = rblEPSP6.SelectedItem.Value.ToString();
                r7 = rblEPSP7.SelectedItem.Value.ToString();
                r8 = rblEPSP8.SelectedItem.Value.ToString();
                r9 = rblEPSP9.SelectedItem.Value.ToString();

                p1 = lblEPSP1.Text;
                p2 = lblEPSP2.Text;
                p3 = lblEPSP3.Text;
                p4 = lblEPSP4.Text;
                p5 = lblEPSP5.Text;
                p6 = lblEPSP6.Text;
                p7 = lblEPSP7.Text;
                p8 = lblEPSP8.Text;
                p9 = lblEPSP9.Text;

                ok = GuardarCuestionario("PS", "P1", p1, r1);
                ok = GuardarCuestionario("PS", "P2", p2, r2);
                ok = GuardarCuestionario("PS", "P3", p3, r3);
                ok = GuardarCuestionario("PS", "P4", p4, r4);
                ok = GuardarCuestionario("PS", "P5", p5, r5);
                ok = GuardarCuestionario("PS", "P6", p6, r6);
                ok = GuardarCuestionario("PS", "P7", p7, r7);
                ok = GuardarCuestionario("PS", "P8", p8, r8);
                ok = GuardarCuestionario("PS", "P9", p9, r9);

                Grabacion(ok, 1);
            }
            catch (Exception)
            {
                ok = false;
                Grabacion(ok, 0);
            }
        }

        private Boolean GuardarCuestionario(String tipEnc, String tipPreg, String preg, String rpta)
        {
            ok = false;
            try
            {
                objEncuestaDocumento = new EncuestaDocumento();
                InterfaceRegistrarEncuesta = new clsFacadeRegistrarEncuesta();
                objEncuestaDocumento.Empresa = Convert.ToInt16(Session["empresa"].ToString());
                objEncuestaDocumento.TipoDocumento = Session["tipodocumento"].ToString();
                objEncuestaDocumento.NumeroDocumento = Session["nropedido"].ToString();
              //  objEncuestaDocumento.Documento = Session["nropedido"].ToString();
                objEncuestaDocumento.Secuencia = InterfaceRegistrarEncuesta.TraerUltimaSecuencia();
                objEncuestaDocumento.TipoEncuesta = tipEnc;
                objEncuestaDocumento.TipoPregunta = tipPreg;
                objEncuestaDocumento.DescripcionPregunta = preg;
                objEncuestaDocumento.Respuesta = rpta;
                ok = InterfaceRegistrarEncuesta.GrabarEncuesta(objEncuestaDocumento);
            }
            catch (Exception)
            {
                ok = false;
            }
            return ok;
        }

        public void Grabacion(Boolean ok, int tipo)
        {
            if (tipo == 1)
            {
                if (!ok)
                {
                    titulo = "ERROR AL GRABAR";
                    msg = "Por favor verificar que todos los campos esten completos.";
                    MostrarComentario(msg, titulo);
                }
                else
                {
                    Session["Grabacion"] = ok;
                    Session["msg"] = "Grabacion de Encuesta Exitosa";
                    Response.Redirect("~/Procesos/AdministrarPedido/frmAdministrarPedido.aspx");
                }
            }
            else if (tipo == 0)
            {
                titulo = "Mensaje";
                msg  = "Debe Llenar Todos Campos de Respuesta";
                MostrarComentario(msg, titulo);
            }
            
        }

        private void MostrarComentario(String msg, String titulo)
        {
            pcMensaje.HeaderText = titulo;
            lblMensaje.Text = msg;
            ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcMensaje.Show();", true);
        }
    }
}